package co.edu.javeriana.konigsberg.xavier.servicio;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.ejb.Stateless;

import co.edu.javeriana.konigsberg.xavier.dao.desc.PaisDAOLocal;
import co.edu.javeriana.konigsberg.xavier.dto.PaisDTO;
import co.edu.javeriana.konigsberg.xavier.entidad.Pais;

/**
 * Session Bean implementation class PaisServicio
 */
@Stateless
public class PaisServicio implements PaisServicioRemote, PaisServicioLocal {

	@EJB
	private PaisDAOLocal paisDAO;
	
	private static Map<BigInteger, PaisDTO> mapaPaises;
	
	private List<PaisDTO> paisDTOs;
    /**
     * Default constructor. 
     */
    public PaisServicio() {
    }
    
    @Override
    public List<PaisDTO> obtenerLista(){
		if(mapaPaises == null){
			mapaPaises = new HashMap<BigInteger, PaisDTO>();
	    	paisDTOs = new ArrayList<PaisDTO>();
			List<Pais> paises = paisDAO.obtenerLista();
			for (Pais pais : paises) {
				PaisDTO paisDTO = getDTO(pais);
				paisDTOs.add(paisDTO);
				mapaPaises.put(paisDTO.getIdPais(), paisDTO);
			}

		}
		return paisDTOs;
	}
    
    @Override
	public PaisDTO obtenerPaisPorId(BigInteger id) {
    	if(mapaPaises == null){
    		obtenerLista();
    	}
		return mapaPaises.get(id);
	}

	@Override
	public PaisDTO getDTO(Object entidad) {
		Pais pais = (Pais)entidad;
		PaisDTO paisDTO = new PaisDTO();
		paisDTO.setIdPais(pais.getIdPais());
		paisDTO.setNombrePais(pais.getNombrePais());
		paisDTO.setPrioridad(pais.getPrioridad());
		return paisDTO;
	}


}
